package vista;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.FocusListener;
import java.awt.event.ItemListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseListener;
import java.awt.event.WindowListener;
import java.io.File;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;

public class InterfazGraficaCliente 
{
	private JButton btnGuardar,btnModificar,btnEliminar,btnCancelar,btnSalir,
                    btnSiguiente,btnAtras,btnPrimero,btnUltimo;
    private JTextField txtCodCliente,txtNombre,txtTelefono;
    private JTextArea txtDireccion;
    private JRadioButton rbVenezolano;
    private JRadioButton rbExtranjero;
    private JRadioButton rbJuridico;
    private Ventana ventana;
    
    public InterfazGraficaCliente()
    {
    	ImageIcon imgCliente= new ImageIcon(getClass().getResource("imagenes" + File.separator + "clientes.png"));
    	ImageIcon imgSiguiente= new ImageIcon(getClass().getResource("imagenes" + File.separator + "siguiente.gif"));
    	ImageIcon imgAtras= new ImageIcon(getClass().getResource("imagenes" + File.separator + "atras.gif"));
    	ImageIcon imgPrimero= new ImageIcon(getClass().getResource("imagenes" + File.separator + "primero.gif"));
    	ImageIcon imgUltimo= new ImageIcon(getClass().getResource("imagenes" + File.separator + "ultimo.gif"));
    	
        ImageIcon imgGuardar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "guardar.png"));
        ImageIcon imgModificar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "modificar.png"));
        ImageIcon imgEliminar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "eliminar.png"));
        ImageIcon imgCancelar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "cancelar.png"));
        ImageIcon imgSalir= new ImageIcon(getClass().getResource("imagenes" + File.separator + "salir.png"));
        
        FabricaAbstractaVentana fabricaVentanas= FabricaAbstractaVentana.getInstance();
		ventana= fabricaVentanas.crearVentanaIndependiente();
		
		ventana.asignarTitulo("Cliente");
		
		JLabel lblTitulo= new JLabel("CLIENTES");
	    JLabel lblCodCliente= new JLabel("Cedula o Rif:");
	    JLabel lblNombre= new JLabel("Nombre:");
	    JLabel lblDireccion= new JLabel("Direccion:");
	    JLabel lblTelefono= new JLabel("Telefono:");
	        
	        
	    JLabel lblLogo= new JLabel(imgCliente);
	        
	    JToolBar barraHerramientas= new JToolBar();
	       
	        
	     /*Botones de Navegacion*/
	     JToolBar barraNavegacion= new JToolBar();
	        
	     barraNavegacion.setFloatable(false);
	     barraNavegacion.setOpaque(false);
	     barraNavegacion.setBorderPainted(false);
	        
	     btnSiguiente= new JButton(imgSiguiente);
	     btnAtras= new JButton(imgAtras);
	     btnPrimero= new JButton(imgPrimero);
	     btnUltimo= new JButton(imgUltimo);
	        
	     btnSiguiente.setActionCommand("Siguiente");
	     btnAtras.setActionCommand("Atras");
	     btnPrimero.setActionCommand("Primero");
	     btnUltimo.setActionCommand("Ultimo");
	        
	     btnPrimero.setToolTipText("Primero");
	     btnAtras.setToolTipText("Atras");
	     btnSiguiente.setToolTipText("Siguiente");
	     btnUltimo.setToolTipText("Ultimo");
	        
	     barraNavegacion.add(btnPrimero);
	     barraNavegacion.add(btnAtras);
	     barraNavegacion.add(btnSiguiente);
	     barraNavegacion.add(btnUltimo);
	     /********Fin de botones de Navegacion*******/
	       
	     btnGuardar= new JButton("GUARDAR",imgGuardar);
	     btnModificar= new JButton("MODIFICAR",imgModificar);
	     btnEliminar= new JButton("ELIMINAR",imgEliminar);
	     btnCancelar= new JButton("CANCELAR",imgCancelar);
	     btnSalir= new JButton("SALIR",imgSalir);
	        
	        
	     txtCodCliente= new JTextField();
	     txtNombre= new JTextField();
	     txtDireccion= new JTextArea();
	     txtTelefono= new JTextField();
	        
	     txtCodCliente.setName("txtCodCliente");
	     txtNombre.setName("txtNombre");
	     txtDireccion.setName("txtDireccion");
	     txtTelefono.setName("txtTelefono");
	        
	     ButtonGroup bgNacionalidad= new ButtonGroup();

	     rbVenezolano= new JRadioButton("V");
	     rbExtranjero= new JRadioButton("E");
	     rbJuridico = new JRadioButton("J");

	     rbVenezolano.setOpaque(false);
	     rbExtranjero.setOpaque(false);
	     rbJuridico.setOpaque(false);
	        
	     rbVenezolano.setSelected(true);
	        
	     bgNacionalidad.add(rbVenezolano);
	     bgNacionalidad.add(rbExtranjero);
	     bgNacionalidad.add(rbJuridico);

	     barraHerramientas.setFloatable(false);
	     barraHerramientas.setOpaque(false);
	     barraHerramientas.setBorderPainted(false);
	        
	     btnGuardar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnGuardar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnGuardar.setOpaque(false);
	     btnGuardar.setBorderPainted(false);

	     btnModificar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnModificar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnModificar.setOpaque(false);
	     btnModificar.setBorderPainted(false);

	     btnEliminar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnEliminar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnEliminar.setOpaque(false);
	     btnEliminar.setBorderPainted(false);

	     btnCancelar.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnCancelar.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnCancelar.setOpaque(false);
	     btnCancelar.setBorderPainted(false);

	     btnSalir.setVerticalTextPosition(SwingConstants.BOTTOM);
	     btnSalir.setHorizontalTextPosition(SwingConstants.CENTER);
	     btnSalir.setOpaque(false);
	     btnSalir.setBorderPainted(false);
	        
	     barraHerramientas.add(btnGuardar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnModificar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnEliminar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnCancelar);
	     barraHerramientas.addSeparator();
	     barraHerramientas.addSeparator();
	     barraHerramientas.add(btnSalir);
	        
	     lblTitulo.setFont(new Font(Font.SERIF,Font.BOLD,20));
	     lblCodCliente.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     lblNombre.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     lblTelefono.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     lblDireccion.setFont(new Font(Font.DIALOG,Font.BOLD,15));
	     
	     ventana.agregarComponente(lblLogo, 10, 60, 230, 200);
	     ventana.agregarComponente(lblCodCliente,250, 65, 100, 20);
	     ventana.agregarComponente(lblNombre,250, 110, 80, 20);
	     ventana.agregarComponente(lblDireccion,250, 170, 100, 20);
	     ventana.agregarComponente(lblTelefono,250, 230, 200, 20);
	     
	     ventana.agregarComponente(rbJuridico, 360,65, 40, 20);
	     ventana.agregarComponente(rbVenezolano, 395,65, 40, 20);
	     ventana.agregarComponente(rbExtranjero, 430,65, 40, 20);
	     
	     ventana.agregarComponente(txtCodCliente, 465,61, 139, 25);
	     ventana.agregarComponente(txtNombre, 365,107,240, 25);

	     txtDireccion.setLineWrap(true);
	     txtDireccion.setWrapStyleWord(true);
	     JScrollPane scroll= new JScrollPane(txtDireccion,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
	     
	     ventana.agregarComponente(scroll, 365, 155,240, 50);
	     
	     ventana.agregarComponente(txtTelefono, 365, 225, 240, 25);
	     
	     ventana.agregarComponente(barraNavegacion, 210, 280,200, 30);
	     ventana.agregarComponente(barraHerramientas, 78, 330,500, 90);
	     
	     ventana.agregarComponente(lblTitulo, 268, 10,180, 30);
	     ventana.asignarTamanio(650, 480);
    }
    
    public void visualizarVentana()
	{
		ventana.visualizar();
	}
	
	public void descargarMemoria()
	{
		ventana.descargarMemoria();
	}
    
    public void actualizarInfo(String codigo,String nombre,
            String direccion,String telefono)
	{
	    if (codigo.toUpperCase().startsWith("J"))
	       rbJuridico.setSelected(true);
	    else if (codigo.toUpperCase().startsWith("V"))
	       rbVenezolano.setSelected(true);
	    else
	       rbExtranjero.setSelected(true);
	
		txtCodCliente.setText(codigo.substring(2));
		txtNombre.setText(nombre);
		txtDireccion.setText(direccion);
		txtTelefono.setText(telefono);
	}
	
	public void addListener(ActionListener escuchador)
	{
		btnGuardar.addActionListener(escuchador);
		btnEliminar.addActionListener(escuchador);
		btnModificar.addActionListener(escuchador);
		btnCancelar.addActionListener(escuchador);
		btnSalir.addActionListener(escuchador);
		
		btnSiguiente.addActionListener(escuchador);
		btnAtras.addActionListener(escuchador);
		btnPrimero.addActionListener(escuchador);
		btnUltimo.addActionListener(escuchador);
	}
	
	public void addListener(KeyListener escuchador)
	{
		txtCodCliente.addKeyListener(escuchador);
		txtNombre.addKeyListener(escuchador);
		txtDireccion.addKeyListener(escuchador);
		txtTelefono.addKeyListener(escuchador);
	}
	
	
	
	public void addListener(WindowListener escuchador)
	{
	   ventana.addListener(escuchador);
	}
	
	public void addListener(FocusListener escuchador)
	{
	    txtCodCliente.addFocusListener(escuchador);
	}
	
	public void addListener(MouseListener escuchador)
	{
		this.rbVenezolano.addMouseListener(escuchador);
		this.rbExtranjero.addMouseListener(escuchador);
		this.rbJuridico.addMouseListener(escuchador);
	}
	
	public void addListener(ItemListener escuchador)
	{
		this.rbVenezolano.addItemListener(escuchador);
		this.rbExtranjero.addItemListener(escuchador);
		this.rbJuridico.addItemListener(escuchador);
	}
	
	
	
	public void habilitarBotonActualizar(String boton)
	{
		if (btnGuardar.getActionCommand().equalsIgnoreCase(boton))
		    btnGuardar.setEnabled(true);
		else if (btnEliminar.getActionCommand().equalsIgnoreCase(boton))
			btnEliminar.setEnabled(true);
		else if (btnModificar.getActionCommand().equalsIgnoreCase(boton))
			btnModificar.setEnabled(true);
		else if (btnCancelar.getActionCommand().equalsIgnoreCase(boton))
			btnCancelar.setEnabled(true);
	
	}
	
	public void deshabilitarBotonActualizar(String boton)
	{
		if (btnGuardar.getActionCommand().equalsIgnoreCase(boton))
			btnGuardar.setEnabled(false);
		else if (btnEliminar.getActionCommand().equalsIgnoreCase(boton))
			btnEliminar.setEnabled(false);
		else if (btnModificar.getActionCommand().equalsIgnoreCase(boton))
			btnModificar.setEnabled(false);
		else if (btnCancelar.getActionCommand().equalsIgnoreCase(boton))
			btnCancelar.setEnabled(false);
	
	}
	
	public void habilitarNavegacion()
	{
		btnSiguiente.setEnabled(true);
		btnAtras.setEnabled(true);
		btnPrimero.setEnabled(true);
		btnUltimo.setEnabled(true);
	}
	
	public void deshabilitarNavegacion()
	{
		btnSiguiente.setEnabled(false);
		btnAtras.setEnabled(false);
		btnPrimero.setEnabled(false);
		btnUltimo.setEnabled(false);
	}
	
	public void limpiarTextos()
	{
		txtNombre.setText("");
		txtDireccion.setText("");
		txtTelefono.setText("");
	}
	
	public String getCodCliente()
	{
		String texto= "";
		
		if (rbJuridico.isSelected())
			texto="J-";
		else if (rbVenezolano.isSelected())
			texto = "V-";
		else if (rbExtranjero.isSelected())
			texto = "E-";
		
		texto += txtCodCliente.getText();
		
		return texto;
	}
	
	public String getNombre()
	{
		return txtNombre.getText();
	}
	
	public String getDireccion()
	{
		return txtDireccion.getText();
	}
	
	public String getTelefono()
	{
		return txtTelefono.getText();
	}
	
	public boolean isJuridico()
	{
		return rbJuridico.isSelected();
	}


}
